1. Field of the Invention
Aspects of the present invention relate to a method of generating a virtual software platform based on a component model, and a method of validating a software platform architecture using the platform, and more particularly, to a method and apparatus by which in order to validate the platform architecture of a software product being developed based on a component model, a virtual platform is generated before direct internal implementation of a code, and by using the virtual platform, integrity and reliability of component model design information can be validated.
2. Description of the Related Art
In software development, a design stage is a process in which detailed operations to be implemented in an implementation stage are identified and a structure in which a variety of elements are mutually linked using an appropriate method is confirmed in advance, thereby aiding quick and faultless development. As software packages increase in size and complexity, the desire for securing better speed and accuracy through an automated system in this design stage increases.
In the field of embedded software (such as consumer electronics (CE) software), fusing and mixing of operations and coupling of new operations frequently occur. Furthermore, according to market trends, fast shipment may be requested and a mass production system may be needed. Accordingly, small errors in design and implementation of software should be accurately detected and corrected. In particular, once the implementation is completed, testing costs rapidly increase. Accordingly, the present concept of testing is evolving to include validating software in advance in a requirement analysis and design stage, thereby minimizing occurrences of errors in the following stages.
A software product line (SPL) system to effectively support development of multiple products based on reusability and variability in CE software development uses a method capable of performing automation of validation of a platform itself and implementation based on design information.
In general, software is developed as a completed product through a sequence of requirement analysis, design, implementation, test, and distribution stages. Whether software is implemented in accordance with a design is confirmed through generating a test case in a test stage. According to conventional technology, the test stage that is regarded as the final stage of software development is performed after being broadly divided into such categories as a unit test for each unit operation, an integration test in which all unit operations of a whole system are linked, and a system test for performance and non-operational items. That is, in order to test a software code whose implementation development is completed, such tests as the unit test, integration test, and system test for the software code are performed along with the correction of errors, and the code is revised to reflect the corrections. In this way, the code is gradually developed into a stabilized software product.
As the size of software code has recently become huge, the operational limitations of the test method according to the conventional development process have been recognized and technologies and methods for more effective testing have been studied. Among them, test driven development (TDD) is a method focusing on reducing costs of test and modification concentrated in the second half of development, by performing tests through all areas of development processes. At present, conventional technologies are focused on the testing of implementation code.
Meanwhile, when a variety of types of software products are being developed, there is a trend of adding characteristic additional operations based on common platforms. Major elements in the evaluation of quality of software in this case relates to the reliability of new operations as well as the stability of the platform itself. However, the limitation of the conventional technology in the development of CE software is that it is difficult to precisely validate the design of a platform in which multiple products of software are integrated.
A platform in software development should not only individually describe the structure of each software product itself, but also be able to express a structure integrating a base platform and all variable elements. For this, there is a need for a component model in which such concepts as variability, component, dependency, and configuration can be effectively combined. Accordingly, based on this component model, validation of a design structure of a platform together with implementation can be performed.